WebAssembly์ ๋ฉํฐ ์ค๋ ๋ฉ ๊ธฐ๋ฅ์ ์ดํด๋ณด๊ณ , ๊ณ ์ฑ๋ฅ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ์ํ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ธ์ ์ด์ ์ ๋ง์ถฐ ์ ์ธ๊ณ ๊ฐ๋ฐ์์๊ฒ ์ญ๋์ ์ ๊ณตํฉ๋๋ค.
WebAssembly ๋ฉํฐ ์ค๋ ๋ฉ: ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ฉํ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ก ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ๊ฐ๋ฅ์ฑ ์ด๊ธฐ
๋์งํธ ํ๊ฒฝ์ ๋์์์ด ์งํํ๊ณ ์์ผ๋ฉฐ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ์ฑ๋ฅ ๋ฐ ํจ์จ์ฑ ์๊ตฌ ์์ค์ด ๊ณ์ ๋์์ง๊ณ ์์ต๋๋ค. ์ ํต์ ์ผ๋ก ์น ๋ธ๋ผ์ฐ์ ๋ ๋จ์ผ ์ค๋ ๋ ์คํ ๋ชจ๋ธ์ ์ํด ์ ํ๋์ด ์ต์ ๋ฉํฐ ์ฝ์ด ํ๋ก์ธ์์ ์ ์ฌ๋ ฅ์ ์ต๋ํ ํ์ฉํ๋ ๋ฐ ์ด๋ ค์์ด ์์์ต๋๋ค. ๊ทธ๋ฌ๋ WebAssembly(Wasm) ๋ฉํฐ ์ค๋ ๋ฉ, ํนํ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ์ง์์ ์ถํ์ ์น์์ ๋ณ๋ ฌ ์ฒ๋ฆฌ์ ์ ๊ทผํ๋ ๋ฐฉ์์ ํ์ ํ ์ค๋น๊ฐ ๋์ด ์์ต๋๋ค. ์ด๋ฌํ ๋ฐ์ ์ ๋ณต์กํ ๊ณผํ ์๋ฎฌ๋ ์ด์ ๋ฐ ๋น๋์ค ํธ์ง์์ ์ ๊ตํ ๊ฒ์ ์์ง ๋ฐ ์ค์๊ฐ ๋ฐ์ดํฐ ๋ถ์์ ์ด๋ฅด๊ธฐ๊น์ง ๊ณ์ฐ ์ง์ฝ์ ์ธ ์์ ์ ๋ํ ๊ฐ๋ฅ์ฑ์ ์ธ๊ณ๋ฅผ ์ด์ด์ฃผ๋ฉฐ, ์ด ๋ชจ๋ ๊ฒ์ ์ ์ธ๊ณ์์ ์ก์ธ์คํ ์ ์๋๋ก ํฉ๋๋ค.
WebAssembly์ ์งํ์ ๋ณ๋ ฌ ์ฒ๋ฆฌ์ ํ์์ฑ
์คํ ๊ธฐ๋ฐ ๊ฐ์ ๋จธ์ ์ ์ํ ์ด์ง ๋ช ๋ น์ด ํ์์ธ WebAssembly๋ ์๋ C, C++ ๋ฐ Rust์ ๊ฐ์ ์ธ์ด์ ๋ํ ์์ ํ๊ณ ์ด์ ๊ฐ๋ฅํ๋ฉฐ ํจ์จ์ ์ธ ์ปดํ์ผ ๋์์ผ๋ก ์ค๊ณ๋์์ต๋๋ค. ์ฃผ์ ๋ชฉํ๋ ์ฑ๋ฅ์ ์ค์ํ ์์ ์ ๋ํด JavaScript์ ํ๊ณ๋ฅผ ๊ทน๋ณตํ์ฌ ์น ๋ธ๋ผ์ฐ์ ์์ ์คํ๋๋ ์ฝ๋์ ๊ฑฐ์ ๋ค์ดํฐ๋ธ ์์ค์ ์ฑ๋ฅ์ ์ ๊ณตํ๋ ๊ฒ์ด์์ต๋๋ค. Wasm ์์ฒด๋ ์๋นํ ์ฑ๋ฅ ํฅ์์ ์ ๊ณตํ์ง๋ง, ์ง์ ํ ๋ฉํฐ ์ค๋ ๋ฉ์ด ์๋ค๋ ๊ฒ์ ๊ณ์ฐ ์๊ตฌ ์ฌํญ์ด ๋ง์ ์์ ์กฐ์ฐจ๋ ๋ธ๋ผ์ฐ์ ์ ๋จ์ผ ์ฃผ ์ค๋ ๋์ ๊ฐํ UI ์๋ต์ฑ ์ ํ ๋ฐ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์ด๋ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค๋ ๊ฒ์ ์๋ฏธํ์ต๋๋ค.
์น์์ ๋ณ๋ ฌ ์ฒ๋ฆฌ์ ๋ํ ์๊ตฌ๋ ๋ค์๊ณผ ๊ฐ์ ์ฌ๋ฌ ์ฃผ์ ์์ญ์์ ๋น๋กฏ๋ฉ๋๋ค.
- ๊ณผํ ์ปดํจํ ๋ฐ ๋ฐ์ดํฐ ๋ถ์: ์ ์ธ๊ณ์ ์ฐ๊ตฌ์๊ณผ ๋ถ์๊ฐ๋ ๋ณต์กํ ๊ณ์ฐ, ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ธํธ ์ฒ๋ฆฌ ๋ฐ ๋จธ์ ๋ฌ๋์ ์ํด ์น ๊ธฐ๋ฐ ๋๊ตฌ์ ์ ์ ๋ ์์กดํ๊ณ ์์ต๋๋ค. ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ ์ด๋ฌํ ์์ ์๋๋ฅผ ๋์ด๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
- ๊ฒ์ ๋ฐ ์ธํฐ๋ํฐ๋ธ ๊ฒฝํ: ๊ณ ํ์ง ๊ฒ์ ๋ฐ ๋ชฐ์ ํ ๊ฐ์/์ฆ๊ฐ ํ์ค ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ทธ๋ํฝ ๋ ๋๋ง, ๋ฌผ๋ฆฌ ์ฒ๋ฆฌ ๋ฐ ๊ฒ์ ๋ก์ง ๊ด๋ฆฌ๋ฅผ ์ํด ์๋นํ ์ฒ๋ฆฌ ๋ฅ๋ ฅ์ด ํ์ํฉ๋๋ค. ๋ฉํฐ ์ค๋ ๋ฉ์ ์ด๋ฌํ ์์ ์ ํจ์จ์ ์ผ๋ก ๋ถ์ฐํ ์ ์์ต๋๋ค.
- ๋ฉํฐ๋ฏธ๋์ด ์ฒ๋ฆฌ: ๋น๋์ค ์ธ์ฝ๋ฉ/๋์ฝ๋ฉ, ์ด๋ฏธ์ง ์กฐ์ ๋ฐ ์ค๋์ค ์ฒ๋ฆฌ๋ ๋ณธ์ง์ ์ผ๋ก ๋ณ๋ ฌํ ๊ฐ๋ฅํ ์์ ์ผ๋ก, ์ฌ๋ฌ ์ค๋ ๋์ ์ด์ ์ ํฌ๊ฒ ๋๋ฆด ์ ์์ต๋๋ค.
- ๋ณต์กํ ์๋ฎฌ๋ ์ด์ : ๋ ์จ ๋ชจ๋ธ๋ง์์ ๊ธ์ต ์์ธก์ ์ด๋ฅด๊ธฐ๊น์ง ๋ง์ ๋ณต์กํ ์์คํ ์ ๋ณ๋ ฌ ๊ณ์ฐ์ ํตํด ๋ณด๋ค ํจ๊ณผ์ ์ด๊ณ ๋น ๋ฅด๊ฒ ์๋ฎฌ๋ ์ด์ ํ ์ ์์ต๋๋ค.
- ์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์ : ๋น์ฆ๋์ค ์ธํ ๋ฆฌ์ ์ค ๋๊ตฌ, CRM ์์คํ ๋ฐ ๊ธฐํ ๋ฐ์ดํฐ ์ง์ฝ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ํตํด ์๋นํ ์ฑ๋ฅ ํฅ์์ ์ป์ ์ ์์ต๋๋ค.
์ด๋ฌํ ์๊ตฌ ์ฌํญ์ ์ธ์ํ WebAssembly ์ปค๋ฎค๋ํฐ๋ ๊ฐ๋ ฅํ ๋ฉํฐ ์ค๋ ๋ฉ ์ง์์ ๋์ ํ๊ธฐ ์ํด ์ ๊ทน์ ์ผ๋ก ๋ ธ๋ ฅํด ์์ต๋๋ค.
WebAssembly ๋ฉํฐ ์ค๋ ๋ฉ: ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ธ
WebAssembly ๋ฉํฐ ์ค๋ ๋ฉ์ ํต์ฌ์ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ผ๋ ๊ฐ๋ ์ ์ค์ฌ์ผ๋ก ์ ๊ฐ๋ฉ๋๋ค. ๊ฐ ์ค๋ ๋๊ฐ ์์ฒด ๊ฒฉ๋ฆฌ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์์ ์๋ํ๋ ๋ชจ๋ธ(๋ฐ์ดํฐ ๊ตํ์ ์ํด ๋ช ์์ ๋ฉ์์ง ์ ๋ฌ ํ์)๊ณผ ๋ฌ๋ฆฌ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋์์ ๋์ผํ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ก์ธ์คํ๊ณ ์์ ํ ์ ์์ต๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์ค๋ ๋ ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์์ฃผ ๊ณต์ ๋๊ณ ์กฐ์ ๋๋ ์์ ์ ๋ ํจ์จ์ ์ธ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
WebAssembly ๋ฉํฐ ์ค๋ ๋ฉ์ ์ฃผ์ ๊ตฌ์ฑ ์์:
- WebAssembly ์ค๋ ๋: ์ค๋ ๋ ์์ฑ ๋ฐ ๊ด๋ฆฌ๋ฅผ ์ํ ์๋ก์ด ๋ช ๋ น์ด ์ธํธ์ ๋์ . ์ฌ๊ธฐ์๋ ์ ์ค๋ ๋ ์์ฑ, ๋๊ธฐํ ๋ฐ ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ๋ฅผ ์ํ ๋ช ๋ น์ด๊ฐ ํฌํจ๋ฉ๋๋ค.
- SharedArrayBuffer: ์ผ๋ฐ์ ์ธ ๊ณ ์ ๊ธธ์ด ์์ ์ด์ง ๋ฐ์ดํฐ ๋ฒํผ๋ฅผ ๋ํ๋ด๋ JavaScript ๊ฐ์ฒด์
๋๋ค. ๊ฒฐ์ ์ ์ผ๋ก
SharedArrayBuffer์ธ์คํด์ค๋ ์ฌ๋ฌ ์์ ์(๋ฐ๋ผ์ Wasm ์ค๋ ๋) ๊ฐ์ ๊ณต์ ํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ์ค๋ ๋ ๊ฐ์ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ฑํํ๊ธฐ ์ํ ๊ธฐ๋ณธ ์์์ ๋๋ค. - ์์์ฑ: ์์์ ์คํ์ ๋ณด์ฅํ๋ JavaScript ์์
์ธํธ์
๋๋ค. ์ฆ, ์ด๋ฌํ ์์
์ ๋๋ ์ ์์ผ๋ฉฐ ์ค๋จ๋ ์ ์์ต๋๋ค. ์์์ฑ์ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ์ ์์ ํ๊ฒ ์ก์ธ์คํ๊ณ ์์ ํ์ฌ ๊ฒฝํฉ ์กฐ๊ฑด ๋ฐ ๋ฐ์ดํฐ ์์์ ๋ฐฉ์งํ๋ ๋ฐ ํ์์ ์
๋๋ค.
Atomics.load,Atomics.store,Atomics.add๋ฐAtomics.wait/Atomics.notify์ ๊ฐ์ ์์ ์ ์ค๋ ๋ ๋๊ธฐํ ๋ฐ ์กฐ์ ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. - ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ: WebAssembly ์ธ์คํด์ค์๋ ์์ฒด ์ ํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์์ต๋๋ค. ์ด๋ ์ฐ์์ ์ธ ๋ฐ์ดํธ ๋ฐฐ์ด์ ๋๋ค. ๋ฉํฐ ์ค๋ ๋ฉ์ ์ฌ์ฉํ๋๋ก ์ค์ ํ๋ฉด ์ด๋ฌํ ๋ฉ๋ชจ๋ฆฌ ์ธ์คํด์ค๋ฅผ ๊ณต์ ํ ์ ์์ผ๋ฏ๋ก ์ค๋ ๋๊ฐ ๋์ผํ ๋ฐ์ดํฐ์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
์๋ ๋ฐฉ์: ๊ฐ๋ ์ ๊ฐ์
์ผ๋ฐ์ ์ธ ๋ฉํฐ ์ค๋ ๋ WebAssembly ์ ํ๋ฆฌ์ผ์ด์ ์์:
- ์ฃผ ์ค๋ ๋ ์ด๊ธฐํ: ์ฃผ JavaScript ์ค๋ ๋๋ WebAssembly ๋ชจ๋์ ์ด๊ธฐํํ๊ณ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ์ญํ ์ ํ
SharedArrayBuffer๋ฅผ ๋ง๋ญ๋๋ค. - ์์ ์ ์์ฑ: JavaScript Web Worker๊ฐ ์์ฑ๋ฉ๋๋ค. ๊ฐ ์์ ์๋ WebAssembly ๋ชจ๋์ ์ธ์คํด์คํํ ์ ์์ต๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ๊ณต์ : ์ด์ ์ ์์ฑ๋
SharedArrayBuffer๊ฐ ๊ฐ ์์ ์์๊ฒ ์ ์ก๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ์ด๋ฌํ ์์ ์ ๋ด์ ๋ชจ๋ Wasm ์ธ์คํด์ค๊ฐ ๋์ผํ ๊ธฐ๋ณธ ๋ฉ๋ชจ๋ฆฌ์ ์ก์ธ์คํ ์ ์์ต๋๋ค. - ์ค๋ ๋ ์์ฑ(Wasm ๋ด): C++, Rust ๋๋ Go์ ๊ฐ์ ์ธ์ด์์ ์ปดํ์ผ๋ WebAssembly ์ฝ๋ ์์ฒด๋ ์ค๋ ๋ API(Wasm ์ค๋ ๋ฉ ๋ช ๋ น์ด์ ๋งคํ๋จ)๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ค๋ ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด๋ฌํ ์ค๋ ๋๋ ๊ฐ ์์ ์์ ์ปจํ ์คํธ ๋ด์์ ์๋ํ๊ณ ์ ๊ณต๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ ํฉ๋๋ค.
- ๋๊ธฐํ: ์ค๋ ๋๋ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ์ ๋ํ ์์์ ์์ ์ ์ฌ์ฉํ์ฌ ์์ ์ ํต์ ํ๊ณ ์กฐ์ ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์๋ฃ๋ฅผ ์๋ฆฌ๋ ์์์ ํ๋๊ทธ, ์ค์ํ ์น์ ์ ๋ณดํธํ๋ ์ ๊ธ ๋๋ ๋ชจ๋ ์ค๋ ๋๊ฐ ์งํํ๊ธฐ ์ ์ ํน์ ์ง์ ์ ๋๋ฌํ๋์ง ํ์ธํ๋ ์ฅ๋ฒฝ์ ์ฌ์ฉํ๋ ๊ฒ์ด ํฌํจ๋ ์ ์์ต๋๋ค.
ํฐ ์ด๋ฏธ์ง ์ฒ๋ฆฌ ์์
์ ๋ณ๋ ฌํํด์ผ ํ๋ ์๋๋ฆฌ์ค๋ฅผ ๊ณ ๋ คํด ๋ณด์ญ์์ค. ์ฃผ ์ค๋ ๋๋ ์ด๋ฏธ์ง๋ฅผ ์ฌ๋ฌ ์ฒญํฌ๋ก ๋๋ ์ ์์ต๋๋ค. Wasm ๋ชจ๋์ ์คํํ๋ ๊ฐ ์์
์ ์ค๋ ๋์๋ ์ฒญํฌ๊ฐ ํ ๋น๋ฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ด๋ฌํ ์ค๋ ๋๋ ๊ณต์ SharedArrayBuffer์์ ์ด๋ฏธ์ง ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ฒ๋ฆฌ๋ฅผ ์ํํ๊ณ (์: ํํฐ ์ ์ฉ) ๊ฒฐ๊ณผ๋ฅผ ๋ค๋ฅธ ๊ณต์ ๋ฒํผ์ ๋ค์ ์ธ ์ ์์ต๋๋ค. ์์์ ์์
์ ๋ค๋ฅธ ์ค๋ ๋๊ฐ ๋ค์ ์ฐ๋ ๋์ ์๋ก์ ๊ฒฐ๊ณผ๋ฅผ ๋ฎ์ด์ฐ์ง ์๋๋ก ํฉ๋๋ค.
๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ WebAssembly ๋ฉํฐ ์ค๋ ๋ฉ์ ์ด์
๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ WebAssembly ๋ฉํฐ ์ค๋ ๋ฉ์ ์ฑํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์๋นํ ์ด์ ์ด ์์ต๋๋ค.
- ํฅ์๋ ์ฑ๋ฅ: ๊ฐ์ฅ ๋ถ๋ช ํ ์ด์ ์ ์ฌ๋ฌ CPU ์ฝ์ด๋ฅผ ํ์ฉํ์ฌ ๊ณ์ฐ ์ง์ฝ์ ์ธ ์์ ์ ์คํ ์๊ฐ์ ํฌ๊ฒ ์ค์ผ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ์ด๋ ๋ค์ํ ํ๋์จ์ด ๊ธฐ๋ฅ์ ํตํด ๋ฆฌ์์ค์ ์ก์ธ์คํ๋ ์ ์ธ๊ณ ์ฌ์ฉ์ ๊ธฐ๋ฐ์ ๋งค์ฐ ์ค์ํฉ๋๋ค.
- ํฅ์๋ ์๋ต์ฑ: ๋ฌด๊ฑฐ์ด ๊ณ์ฐ์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋๋ก ์คํ๋ก๋ํจ์ผ๋ก์จ ์ฃผ UI ์ค๋ ๋๋ ๊ณ์ ์์ ๋กญ๊ฒ ์ ์ง๋์ด ์์ ์ ๋ณต์ก์ฑ์ ๊ด๊ณ์์ด ๋ถ๋๋ฝ๊ณ ์๋ต์ฑ์ด ๋ฐ์ด๋ ์ฌ์ฉ์ ํ๊ฒฝ์ ๋ณด์ฅํฉ๋๋ค.
- ๋ ๋์ ์ ํ๋ฆฌ์ผ์ด์ ๋ฒ์: ์ด ๊ธฐ์ ์ ์ ๊ตํ ์๋ฎฌ๋ ์ด์ , AI ๋ชจ๋ธ ์ถ๋ก ๋ฐ ์ ๋ฌธ ๋ฑ๊ธ์ ์ฐฝ์์ ๋๊ตฌ์ ๊ฐ์ด ์ด์ ์๋ ์น ๋ธ๋ผ์ฐ์ ์์ ํจ์จ์ ์ผ๋ก ์คํํ๋ ๊ฒ์ด ๋น์ค์ฉ์ ์ด๊ฑฐ๋ ๋ถ๊ฐ๋ฅํ๋ ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ง์ํฉ๋๋ค.
- ํจ์จ์ ์ธ ๋ฐ์ดํฐ ๊ณต์ : ๋ฉ์์ง ์ ๋ฌ ๋ชจ๋ธ๊ณผ ๋น๊ตํ ๋ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ ์ค๋ ๋ ๊ฐ์ ๋น๋ฒํ๊ณ ์ธ๋ถํ๋ ๋ฐ์ดํฐ ๊ณต์ ๋ฐ ๋๊ธฐํ๊ฐ ํ์ํ ์ํฌ๋ก๋์ ๋ ํจ์จ์ ์ผ ์ ์์ต๋๋ค.
- ๊ธฐ์กด ์ฝ๋ ๊ธฐ๋ฐ ํ์ฉ: ๊ฐ๋ฐ์๋ ๋ฉํฐ ์ค๋ ๋ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(์: pthreads ๋๋ Go์ goroutine)๋ฅผ ์ฌ์ฉํ๋ ๊ธฐ์กด C/C++/Rust/Go ์ฝ๋ ๊ธฐ๋ฐ์ WebAssembly๋ก ์ปดํ์ผํ์ฌ ์น์์ ์ฑ๋ฅ์ด ๋ฐ์ด๋ ๋ณ๋ ฌ ์ฝ๋๋ฅผ ์คํํ ์ ์์ต๋๋ค.
๊ณผ์ ๋ฐ ๊ณ ๋ ค ์ฌํญ
์์ฒญ๋ ์ ์ฌ๋ ฅ์๋ ๋ถ๊ตฌํ๊ณ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ WebAssembly ๋ฉํฐ ์ค๋ ๋ฉ์๋ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ์ ์๋๋๋ค.
- ๋ธ๋ผ์ฐ์ ์ง์ ๋ฐ ๊ฐ์ฉ์ฑ: ์ง์์ด ์ฆ๊ฐํ๊ณ ์์ง๋ง ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ ์ ์ํด์ผ ํฉ๋๋ค.
SharedArrayBuffer์ ๊ฐ์ ๊ธฐ๋ฅ์ ๋ณด์ ๋ฌธ์ (์: Spectre ๋ฐ Meltdown ์ทจ์ฝ์ )์ ๊ด๋ จํ์ฌ ๋ณต์กํ ์ด๋ ฅ์ ๊ฐ์ง๊ณ ์์ด ์ผ๋ถ ๋ธ๋ผ์ฐ์ ์์ ์ผ์์ ์ธ ์ ํ์ด ๋ฐ์ํ์ต๋๋ค. ๊ฐ๋ฐ์๋ ์ต์ ๋ธ๋ผ์ฐ์ ๊ตฌํ์ ๋ํ ์ต์ ์ ๋ณด๋ฅผ ์ ์งํ๊ณ ๋์ฒด ์ ๋ต์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค. - ๋๊ธฐํ์ ๋ณต์ก์ฑ: ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ ๋์์ฑ ์ ์ด์ ๊ณ ์ ํ ๋ณต์ก์ฑ์ ๋์ ํฉ๋๋ค. ๊ฐ๋ฐ์๋ ๊ฒฝํฉ ์กฐ๊ฑด, ๊ต์ฐฉ ์ํ ๋ฐ ๊ธฐํ ๋์์ฑ ๋ฒ๊ทธ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์์์ ์์ ์ ์ฌ์ฉํ๋ ๋ฐ ์ธ์ฌํด์ผ ํฉ๋๋ค. ์ด๋ฅผ ์ํด์๋ ๋ฉํฐ ์ค๋ ๋ฉ ์๋ฆฌ์ ๋ํ ๊ฐ๋ ฅํ ์ดํด๊ฐ ํ์ํฉ๋๋ค.
- ๋๋ฒ๊น : ๋ฉํฐ ์ค๋ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ฒ๊น ํ๋ ๊ฒ์ ๋จ์ผ ์ค๋ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ฒ๊น ํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ ์ด๋ ค์ธ ์ ์์ต๋๋ค. ๋์ Wasm ์ฝ๋๋ฅผ ๋๋ฒ๊น ํ๊ธฐ ์ํ ๋๊ตฌ ๋ฐ ๊ธฐ์ ์ ์ฌ์ ํ ๋ฐ์ ํ๊ณ ์์ต๋๋ค.
- ๊ต์ฐจ ์๋ณธ ๊ฒฉ๋ฆฌ:
SharedArrayBuffer๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์น ํ์ด์ง๊ฐ ํน์ ๊ต์ฐจ ์๋ณธ ๊ฒฉ๋ฆฌ ํค๋(Cross-Origin-Opener-Policy: same-origin๋ฐCross-Origin-Embedder-Policy: require-corp)์ ํจ๊ป ์ ๊ณต๋์ด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด๋ ํนํ ์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ(CDN)์์ ํธ์คํ ๋๊ฑฐ๋ ๋ณต์กํ ์๋ฒ ๋ฉ ์๋๋ฆฌ์ค๊ฐ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ ์ค์ํ ๋ฐฐํฌ ๊ณ ๋ ค ์ฌํญ์ ๋๋ค. - ์ฑ๋ฅ ํ๋: ์ต์ ์ ์ฑ๋ฅ์ ์ป์ผ๋ ค๋ฉด ์์ ๋ถํ ๋ฐฉ๋ฒ, ์ค๋ ๋ ๊ด๋ฆฌ ๋ฐฉ๋ฒ ๋ฐ ๋ฐ์ดํฐ ์ก์ธ์ค ๋ฐฉ๋ฒ์ ์ ์คํ๊ฒ ๊ณ ๋ คํด์ผ ํฉ๋๋ค. ๋นํจ์จ์ ์ธ ๋๊ธฐํ ๋๋ ๋ฐ์ดํฐ ๊ฒฝํฉ์ ๋ณ๋ ฌ ์ฒ๋ฆฌ์ ์ด์ ์ ๋ฌดํจํํ ์ ์์ต๋๋ค.
์ค์ ์์ ๋ฐ ์ฌ์ฉ ์ฌ๋ก
๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ WebAssembly ๋ฉํฐ ์ค๋ ๋ฉ์ด ๋ค์ํ ์ง์ญ ๋ฐ ์ฐ์ ์์ ์ค์ ์๋๋ฆฌ์ค์ ์ด๋ป๊ฒ ์ ์ฉ๋ ์ ์๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.
1. ๊ณผํ ์๋ฎฌ๋ ์ด์ ๋ฐ ๊ณ ์ฑ๋ฅ ์ปดํจํ (HPC)
์๋๋ฆฌ์ค: ์ ๋ฝ์ ํ ๋ํ์์ ๊ธฐํ ๋ชจ๋ธ๋ง์ ์ํ ์น ๊ธฐ๋ฐ ํฌํธ์ ๊ฐ๋ฐํฉ๋๋ค. ์ฐ๊ตฌ์๋ค์ ๋ฐฉ๋ํ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ ๋ก๋ํ๊ณ ๋ณต์กํ ์๋ฎฌ๋ ์ด์ ์ ์คํํฉ๋๋ค. ์ ํต์ ์ผ๋ก ์ด๋ฅผ ์ํด์๋ ์ ์ฉ ์๋ฒ๊ฐ ํ์ํ์ต๋๋ค. WebAssembly ๋ฉํฐ ์ค๋ ๋ฉ์ ํตํด ํฌํธ์ ์ด์ ์ฌ์ฉ์ ๋ก์ปฌ ๋จธ์ ์ ์ฒ๋ฆฌ ๋ฅ๋ ฅ์ ํ์ฉํ์ฌ ์๋ฎฌ๋ ์ด์ ์ ์ฌ๋ฌ Wasm ์ค๋ ๋์ ๋ถ์ฐํ ์ ์์ต๋๋ค.
๊ตฌํ: C++ ๊ธฐํ ์๋ฎฌ๋ ์ด์
๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ WebAssembly๋ก ์ปดํ์ผ๋ฉ๋๋ค. JavaScript ํ๋ฐํธ์๋๋ ๊ฐ Wasm ๋ชจ๋์ ์ธ์คํด์คํํ๋ ์ฌ๋ฌ Web Worker๋ฅผ ๋ง๋ญ๋๋ค. SharedArrayBuffer๋ ์๋ฎฌ๋ ์ด์
๊ทธ๋ฆฌ๋๋ฅผ ๋ณด์ ํฉ๋๋ค. Wasm ๋ด์ ์ค๋ ๋๋ ๊ฐ ์๊ฐ ๋จ๊ณ์์ ๊ณ์ฐ์ ๋๊ธฐํํ๊ธฐ ์ํด ์์์ ์์
์ ์ฌ์ฉํ์ฌ ๊ทธ๋ฆฌ๋ ๊ฐ์ ๊ณต๋์ผ๋ก ์
๋ฐ์ดํธํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ธ๋ผ์ฐ์ ๋ด์์ ์ง์ ์๋ฎฌ๋ ์ด์
์๋๊ฐ ํฌ๊ฒ ํฅ์๋ฉ๋๋ค.
2. 3D ๋ ๋๋ง ๋ฐ ๊ฒ์ ๊ฐ๋ฐ
์๋๋ฆฌ์ค: ๋ถ๋ฏธ์ ํ ๊ฒ์ ์คํ๋์ค์์ ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฐ 3D ๊ฒ์์ ๋ง๋ค๊ณ ์์ต๋๋ค. ๋ณต์กํ ์ฅ๋ฉด ๋ ๋๋ง, ๋ฌผ๋ฆฌ ์ฒ๋ฆฌ ๋ฐ AI ๋ก์ง ๊ด๋ฆฌ๋ ๊ณ์ฐ ์ง์ฝ์ ์ ๋๋ค. WebAssembly ๋ฉํฐ ์ค๋ ๋ฉ์ ํตํด ์ด๋ฌํ ์์ ์ ์ฌ๋ฌ ์ค๋ ๋์ ๋ถ์ฐ์์ผ ํ๋ ์ ์๋์ ์๊ฐ์ ์ถฉ์ค๋๋ฅผ ํฅ์์ํฌ ์ ์์ต๋๋ค.
๊ตฌํ: ๋์์ฑ ๊ธฐ๋ฅ์ ํ์ฉํ๋ Rust๋ก ์์ฑ๋ ๊ฒ์ ์์ง์ด Wasm์ผ๋ก ์ปดํ์ผ๋ฉ๋๋ค. SharedArrayBuffer๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ ๋ฐ์ดํฐ, ํ
์ค์ฒ ๋๋ ์ฅ๋ฉด ๊ทธ๋ํ ์ ๋ณด๋ฅผ ์ ์ฅํ ์ ์์ต๋๋ค. ์์
์ ์ค๋ ๋๋ ์ฅ๋ฉด์ ๋ค๋ฅธ ๋ถ๋ถ์ ๋ก๋ํ๊ฑฐ๋ ๋ณ๋ ฌ๋ก ๋ฌผ๋ฆฌ ๊ณ์ฐ์ ์ํํฉ๋๋ค. ์์์ ์์
์ ๋ ๋๋ง ๋ฐ์ดํฐ๊ฐ ์์ ํ๊ฒ ์
๋ฐ์ดํธ๋๋๋ก ํฉ๋๋ค.
3. ๋น๋์ค ๋ฐ ์ค๋์ค ์ฒ๋ฆฌ
์๋๋ฆฌ์ค: ์์์์ ๊ธฐ๋ฐ์ ๋ ์จ๋ผ์ธ ๋น๋์ค ํธ์ง ํ๋ซํผ์ ํตํด ์ฌ์ฉ์๋ ๋ธ๋ผ์ฐ์ ์์ ์ง์ ๋น๋์ค๋ฅผ ํธ์งํ๊ณ ๋ ๋๋งํ ์ ์์ต๋๋ค. ํํฐ ์ ์ฉ, ํธ๋์ค์ฝ๋ฉ ๋๋ ๋ด๋ณด๋ด๊ธฐ์ ๊ฐ์ ์์ ์ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฝ๋๋ค. ๋ฉํฐ ์ค๋ ๋ฉ์ ์ฌ์ฉ์๊ฐ ํ๋ก์ ํธ๋ฅผ ์๋ฃํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ํ๊ธฐ์ ์ผ๋ก ์ค์ผ ์ ์์ต๋๋ค.
๊ตฌํ: ๋น๋์ค ์กฐ์์ ์ํ C ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ Wasm์ผ๋ก ์ปดํ์ผ๋ฉ๋๋ค. JavaScript ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ ๋น๋์ค ์ธ๊ทธ๋จผํธ๋ฅผ ์ฒ๋ฆฌํ๋ ์์
์๋ฅผ ๋ง๋ญ๋๋ค. SharedArrayBuffer๋ ์์ ๋น๋์ค ํ๋ ์์ ์ ์ฅํฉ๋๋ค. Wasm ์ค๋ ๋๋ ํ๋ ์ ์ธ๊ทธ๋จผํธ๋ฅผ ์ฝ๊ณ ํจ๊ณผ๋ฅผ ์ ์ฉํ ๋ค์ ์ฒ๋ฆฌ๋ ํ๋ ์์ ๋ค๋ฅธ ๊ณต์ ๋ฒํผ์ ๋ค์ ์๋๋ค. ์์์ ์นด์ดํฐ์ ๊ฐ์ ๋๊ธฐํ ๊ธฐ๋ณธ ํ์์ ์ฌ์ฉํ์ฌ ๋ชจ๋ ์ค๋ ๋์์ ํ๋ ์ ์ฒ๋ฆฌ ์งํ ์ํฉ์ ์ถ์ ํ ์ ์์ต๋๋ค.
4. ๋ฐ์ดํฐ ์๊ฐํ ๋ฐ ๋ถ์
์๋๋ฆฌ์ค: ๋จ์๋ฉ๋ฆฌ์นด์ ๊ธ์ต ๋ถ์ ํ์ฌ๋ ๋๊ท๋ชจ ์์ฅ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์๊ฐํํ๊ธฐ ์ํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๊ณตํฉ๋๋ค. ์๋ฐฑ๋ง ๊ฐ์ ๋ฐ์ดํฐ ํฌ์ธํธ์ ๋ํ ๋ํํ ํํฐ๋ง, ์ง๊ณ ๋ฐ ์ฐจํธ ์์ฑ์ ๋จ์ผ ์ค๋ ๋์์ ๋๋ฆด ์ ์์ต๋๋ค.
๊ตฌํ: ๋์์ฑ์ ์ํด goroutine์ ์ฌ์ฉํ๋ Go๋ก ์์ฑ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ Wasm์ผ๋ก ์ปดํ์ผ๋ฉ๋๋ค. SharedArrayBuffer๋ ์์ ์์ฅ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ ํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ํํฐ๋ฅผ ์ ์ฉํ๋ฉด ์ฌ๋ฌ Wasm ์ค๋ ๋๊ฐ ๊ณต์ ๋ฐ์ดํฐ๋ฅผ ๋์์ ์ค์บํ๊ณ , ์ง๊ณ๋ฅผ ์ํํ๊ณ , ์ฐจํธ ์์ฑ์ ์ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ฑ์๋๋ค. ์์์ ์์
์ ์ง๊ณ๋ ๊ฒฐ๊ณผ์ ๋ํ ์ค๋ ๋๋ก๋ถํฐ ์์ ํ ์
๋ฐ์ดํธ๋ฅผ ๋ณด์ฅํฉ๋๋ค.
์์ํ๊ธฐ: ๊ตฌํ ๋จ๊ณ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก
๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ WebAssembly ๋ฉํฐ ์ค๋ ๋ฉ์ ํ์ฉํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด๊ณ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ค์ํ์ญ์์ค.
1. ์ธ์ด ๋ฐ ์ปดํ์ผ๋ฌ ์ ํ
๋ฉํฐ ์ค๋ ๋ฉ์ ์ง์ํ๊ณ WebAssembly ์ปดํ์ผ ๋์์ด ์ฐ์ํ ์ธ์ด๋ฅผ ์ ํํฉ๋๋ค.
- C/C++: pthreads๋ฅผ ์ฌ์ฉํ์ฌ Wasm ์ค๋ ๋๋ก ์ฝ๋๋ฅผ ์ปดํ์ผํ ์ ์๋ Emscripten๊ณผ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- Rust: Rust์ ๊ฐ๋ ฅํ ๋์์ฑ ๊ธฐ๋ณธ ํ์๊ณผ ๋ฐ์ด๋ Wasm ์ง์์ ์ด๋ฅผ ์ฃผ์ ํ๋ณด๋ก ๋ง๋ญ๋๋ค.
rayon๋๋ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ค๋ ๋ฉ๊ณผ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. - Go: Go์ ๋ด์ฅ ๋์์ฑ ๋ชจ๋ธ(goroutine)์ Wasm ์ค๋ ๋๋ก ์ปดํ์ผํ ์ ์์ต๋๋ค.
2. ๊ต์ฐจ ์๋ณธ ๊ฒฉ๋ฆฌ๋ฅผ ์ํด ์น ์๋ฒ ๊ตฌ์ฑ
์ธ๊ธํ๋ฏ์ด SharedArrayBuffer์๋ ๋ณด์์ ์ํด ํน์ HTTP ํค๋๊ฐ ํ์ํฉ๋๋ค. ์น ์๋ฒ๊ฐ ๋ค์์ ๋ณด๋ด๋๋ก ๊ตฌ์ฑ๋์๋์ง ํ์ธํ์ญ์์ค.
Cross-Origin-Opener-Policy: same-originCross-Origin-Embedder-Policy: require-corp
์ด๋ฌํ ํค๋๋ ์น ํ์ด์ง์ ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ์ ๋ง๋ค์ด SharedArrayBuffer๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํฉ๋๋ค. ๋ก์ปฌ ๊ฐ๋ฐ ์๋ฒ์๋ ์ด๋ฌํ ํค๋๋ฅผ ์ฌ์ฉํ๋๋ก ์ค์ ํ๋ ์ต์
์ด ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
3. JavaScript ํตํฉ: ์์ ์ ๋ฐ SharedArrayBuffer
JavaScript ์ฝ๋๋ ๋ค์์ ๋ํ ์ฑ ์์ด ์์ต๋๋ค.
- ์์
์ ์์ฑ: ์์
์ ์คํฌ๋ฆฝํธ๋ฅผ ๊ฐ๋ฆฌํค๋
Worker๊ฐ์ฒด๋ฅผ ์ธ์คํด์คํํฉ๋๋ค. SharedArrayBuffer์์ฑ: ํ์ํ ํฌ๊ธฐ์SharedArrayBuffer๋ฅผ ํ ๋นํฉ๋๋ค.- ๋ฉ๋ชจ๋ฆฌ ์ ์ก:
worker.postMessage()๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ์์ ์์๊ฒSharedArrayBuffer๋ฅผ ์ ๋ฌํฉ๋๋ค.SharedArrayBuffer๋ ๋ณต์ฌ๋์ง ์๊ณ ์ฐธ์กฐ๋ก ์ ์ก๋ฉ๋๋ค. - Wasm ๋ก๋: ์์ ์ ๋ด์์ ์ปดํ์ผ๋ WebAssembly ๋ชจ๋์ ๋ก๋ํฉ๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ์ฐ๊ฒฐ: ์์ ๋
SharedArrayBuffer๋ฅผ WebAssembly ์ธ์คํด์ค์ ๋ฉ๋ชจ๋ฆฌ์ ์ ๋ฌํฉ๋๋ค. - ์ ํธ ์ ์ก ๋ฐ ์กฐ์ :
postMessage๋ฅผ ์ฌ์ฉํ์ฌ ์ด๊ธฐ ๋ฐ์ดํฐ ๋ฐ ๋๊ธฐํ ์ ํธ๋ฅผ ๋ณด๋ด๊ณ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๋ด์์ ์ธ๋ถํ๋ ์ ์ด๋ฅผ ์ํด Wasm์ ์์์ ์์ ์ ์์กดํฉ๋๋ค.
4. WebAssembly ์ฝ๋: ์ค๋ ๋ฉ ๋ฐ ์์์ฑ
Wasm ๋ชจ๋ ๋ด์์:
- ์ค๋ ๋ ์์ฑ: ์ค๋ ๋ ์์ฑ์ ๋ํ ์ ์ ํ ์ธ์ด๋ณ API๋ฅผ ์ฌ์ฉํฉ๋๋ค(์: Rust์
std::thread::spawn, C/C++์ pthreads). ์ด๋ WebAssembly์ ์ค๋ ๋ฉ ๋ช ๋ น์ ๋งคํ๋ฉ๋๋ค. - ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ์ก์ธ์ค: ๊ณต์ ๋ฉ๋ชจ๋ฆฌ์ ๋ํ ์ฐธ์กฐ๋ฅผ ๊ฐ์ ธ์ต๋๋ค(์ธ์คํด์คํ ์ค ๋๋ ์ ์ญ ํฌ์ธํฐ๋ฅผ ํตํด ์ ๊ณต๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์).
- ์์์ฑ ์ฌ์ฉ: ๊ณต์ ๋ฐ์ดํฐ์ ๋ํ ๋ชจ๋ ์ฝ๊ธฐ-์์ -์ฐ๊ธฐ ์์ ์ ๋ํด ์์์ ์์ ์ ํ์ฉํฉ๋๋ค. ์ฌ์ฉ ๊ฐ๋ฅํ ๋ค์ํ ์์์ ์์ (๋ก๋, ์ ์ฅ, ์ถ๊ฐ, ๋นผ๊ธฐ, ๋น๊ต-๊ตํ ๋ฑ)์ ์ดํดํ๊ณ ๋๊ธฐํ ์๊ตฌ ์ฌํญ์ ๊ฐ์ฅ ์ ํฉํ ์์ ์ ์ ํํ์ญ์์ค.
- ๋๊ธฐํ ๊ธฐ๋ณธ ํ์: ์ธ์ด์ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ Wasm์ ๋ํด ์ถฉ๋ถํ ์ถ์ํํ์ง ์๋ ๊ฒฝ์ฐ ์์์ ์์ ์ ์ฌ์ฉํ์ฌ ๋ฎคํ ์ค, ์ธ๋งํฌ์ด ๋๋ ์กฐ๊ฑด ๋ณ์์ ๊ฐ์ ๋๊ธฐํ ๋ฉ์ปค๋์ฆ์ ๊ตฌํํฉ๋๋ค.
5. ๋๋ฒ๊น ์ ๋ต
๋ฉํฐ ์ค๋ ๋ Wasm์ ๋๋ฒ๊น ํ๋ ๊ฒ์ ๊น๋ค๋ก์ธ ์ ์์ต๋๋ค. ๋ค์ ์ ๊ทผ ๋ฐฉ์์ ๊ณ ๋ คํ์ญ์์ค.
- ๋ก๊น : Wasm ์ฝ๋ ๋ด์์ ๊ฐ๋ ฅํ ๋ก๊น ์ ๊ตฌํํ์ฌ ์ฃผ ์ค๋ ๋๊ฐ ์ฝ๊ณ ํ์ํ ์ ์๋ ๊ณต์ ๋ฒํผ์ ์ ์ฌ์ ์ผ๋ก ์ธ ์ ์์ต๋๋ค. ์ถ๋ ฅ์ ๊ตฌ๋ณํ๊ธฐ ์ํด ์ค๋ ๋ ID๋ก ๋ก๊ทธ์ ์ ๋์ฌ๋ฅผ ๋ถ์ ๋๋ค.
- ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ: ์ต์ ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ๋ ์์ ์ ๋ฐ ์ด๋ ์ ๋ ๋ฉํฐ ์ค๋ ๋ ์คํ์ ๋ํ ๋๋ฒ๊น ์ง์์ ๊ฐ์ ํ๊ณ ์์ต๋๋ค.
- ๋จ์ ํ ์คํธ: ํตํฉํ๊ธฐ ์ ์ ๋ฉํฐ ์ค๋ ๋ ๋ก์ง์ ๊ฐ๋ณ ๊ตฌ์ฑ ์์๋ฅผ ๊ฒฉ๋ฆฌ๋ ์ํ์์ ์ฒ ์ ํ ๋จ์ ํ ์คํธํฉ๋๋ค.
- ๋ฌธ์ ์ฌํ: ๋์์ฑ ๋ฒ๊ทธ๋ฅผ ์ง์์ ์ผ๋ก ํธ๋ฆฌ๊ฑฐํ๋ ์๋๋ฆฌ์ค๋ฅผ ๋ถ๋ฆฌํด ๋ณด์ญ์์ค.
6. ์ฑ๋ฅ ํ๋กํ์ผ๋ง
๋ธ๋ผ์ฐ์ ์ฑ๋ฅ ํ๋กํ์ผ๋ง ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ๋ชฉ ํ์์ ์๋ณํฉ๋๋ค. ๋ค์์ ์ฐพ์ผ์ญ์์ค.
- CPU ํ์ฉ๋ฅ : ๋ชจ๋ ์ฝ์ด๊ฐ ํจ๊ณผ์ ์ผ๋ก ํ์ฉ๋๊ณ ์๋์ง ํ์ธํฉ๋๋ค.
- ์ค๋ ๋ ๊ฒฝํฉ: ์ ๊ธ ๋๋ ์์์ ์์ ์ ๋ํ ๋์ ๊ฒฝํฉ์ ์คํ์ ์ง๋ ฌํํ๊ณ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ์ก์ธ์ค ํจํด: ์บ์ ์ง์ญ์ฑ ๋ฐ ์๋ชป๋ ๊ณต์ ๋ ์ฑ๋ฅ์ ์ํฅ์ ์ค ์ ์์ต๋๋ค.
๋ณ๋ ฌ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฏธ๋
๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ WebAssembly ๋ฉํฐ ์ค๋ ๋ฉ์ ์น์ ๊ณ ์ฑ๋ฅ ์ปดํจํ ๋ฐ ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ์ง์ ์ผ๋ก ์ ๋ฅํ ํ๋ซํผ์ผ๋ก ๋ง๋๋ ๋ฐ ์ค์ํ ๋จ๊ณ์ ๋๋ค. ๋ธ๋ผ์ฐ์ ์ง์์ด ์ฑ์๋๊ณ ๊ฐ๋ฐ์ ๋๊ตฌ๊ฐ ๊ฐ์ ๋จ์ ๋ฐ๋ผ ์ด์ ์๋ ๋ค์ดํฐ๋ธ ํ๊ฒฝ์ ๊ตญํ๋์๋ ์ ๊ตํ ๋ณ๋ ฌ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด ํญ๋ฐ์ ์ผ๋ก ์ฆ๊ฐํ ๊ฒ์ผ๋ก ์์ํ ์ ์์ต๋๋ค.
์ด ๊ธฐ์ ์ ๊ฐ๋ ฅํ ์ปดํจํ ๊ธฐ๋ฅ์ ๋ํ ์ก์ธ์ค๋ฅผ ๋ฏผ์ฃผํํฉ๋๋ค. ์์น๋ ์ฌ์ฉํ๋ ์ด์ ์ฒด์ ์ ๊ด๊ณ์์ด ์ ์ธ๊ณ ์ฌ์ฉ์๋ ๋ ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ์คํ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด์ ์ ๋๋ฆด ์ ์์ต๋๋ค. ์ธ๋ด ๋ง์์ ์๋ ํ์์ด ๊ณ ๊ธ ๊ณผํ ์๊ฐํ ๋๊ตฌ์ ์ก์ธ์คํ๊ฑฐ๋ ๋์์ด๋๊ฐ ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ๋ณต์กํ 3D ๋ชจ๋ธ์์ ์ค์๊ฐ์ผ๋ก ๊ณต๋ ์์ ํ๋ ๊ฒ์ ์์ํด ๋ณด์ญ์์ค. ์ด๊ฒ์ด WebAssembly ๋ฉํฐ ์ค๋ ๋ฉ์ด ์ด์ด์ฃผ๋ ๊ฐ๋ฅ์ฑ์ ๋๋ค.
memory64, SIMD ๋ฐ ๊ฐ๋น์ง ์ปฌ๋ ์ ํตํฉ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ํฌํจํ์ฌ WebAssembly ์ํ๊ณ์์ ์งํ ์ค์ธ ๊ฐ๋ฐ์ ๊ธฐ๋ฅ์ ๋์ฑ ํฅ์์ํต๋๋ค. ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๋ฐ ์์์ฑ์ ๊ฒฌ๊ณ ํ ๊ธฐ๋ฐ์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋ ๋ฉํฐ ์ค๋ ๋ฉ์ ์ด๋ฌํ ์งํ์ ์ด์์ด๋ฉฐ ๋ชจ๋ ์ฌ๋์๊ฒ ๋ ๊ฐ๋ ฅํ๊ณ ์ฑ๋ฅ์ด ๋ฐ์ด๋๋ฉฐ ์ก์ธ์ค ๊ฐ๋ฅํ ์น์ ์ํ ๊ธธ์ ์ด์ด์ค๋๋ค.
๊ฒฐ๋ก
๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ WebAssembly ๋ฉํฐ ์ค๋ ๋ฉ์ ์น ๊ฐ๋ฐ์ ํจ๋ฌ๋ค์ ์ ํ์ ๋ํ๋
๋๋ค. ๊ฐ๋ฐ์๊ฐ ์ต์ ๋ฉํฐ ์ฝ์ด ํ๋ก์ธ์์ ์ฑ๋ฅ์ ํ์ฉํ์ฌ ์ ๋ก ์๋ ์ฑ๋ฅ์ ์ ๊ณตํ๊ณ ์์ ํ ์๋ก์ด ๋ฒ์ฃผ์ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ์ง์ํ ์ ์๋๋ก ํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ํธํ์ฑ ๋ฐ ๋์์ฑ ๊ด๋ฆฌ์ ๊ด๋ จ๋ ๋ฌธ์ ๊ฐ ์์ง๋ง ํฅ์๋ ์ฑ๋ฅ, ํฅ์๋ ์๋ต์ฑ ๋ฐ ๋ ๋์ ์ ํ๋ฆฌ์ผ์ด์
๋ฒ์์ ์ด์ ์ ๋ถ์ธํ ์ ์์ต๋๋ค. ์ค๋ ๋, SharedArrayBuffer ๋ฐ ์์์ฑ๊ณผ ๊ฐ์ ํต์ฌ ๊ตฌ์ฑ ์์๋ฅผ ์ดํดํ๊ณ ๊ตฌํ ๋ฐ ๋๋ฒ๊น
์ ๋ํ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ฑํํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ์น์์ ๋ณ๋ ฌ ์ฒ๋ฆฌ์ ๋ชจ๋ ์ ์ฌ๋ ฅ์ ํ์ฉํ์ฌ ๋ฏธ๋๋ฅผ ์ํ ๋ ๋น ๋ฅด๊ณ ์ ๋ฅํ๋ฉฐ ์ ์ธ๊ณ์ ์ผ๋ก ์ก์ธ์ค ๊ฐ๋ฅํ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌ์ถํ ์ ์์ต๋๋ค.